﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CompanyBussiness;

namespace Website.customer.Control
{
    public partial class cUserRegister : System.Web.UI.UserControl
    {
        AccountManagement accountMana = new AccountManagement();
        LanguagesManagement languageMana = new LanguagesManagement();
        MD5 md5 = new MD5();
        string strLogDetail = "";
        CheckValid cv = new CheckValid();
        CompanyBussiness.Account account = new Account();
        CompanyBussiness.AccountLog accountLog = new AccountLog();
        CompanyBussiness.InternalUser internerUser = new InternalUser();
        CompanyBussiness.Language language;
        Modul modul;
        string ipaddress;
        string pass = "";
        string confirm = "";
        string userName = "";
        string fullName = "";
        string email = "";
        string address = "";
        string phone = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Cookies[CONST.COOKIES_LANGUAGE] == null)
            {
                Session[CONST.SESSION_LANGUAGE] = "";
                language = languageMana.GetLanguageByCode("vi-VN");
            }
            else
            {
                Session[CONST.SESSION_LANGUAGE] = Request.Cookies[CONST.COOKIES_LANGUAGE][CONST.COOKIES_LANGUAGE_ID];
                language = languageMana.GetLanguageByID(int.Parse(Session[CONST.SESSION_LANGUAGE].ToString()));
            }
            loadLanguage();
        }
        protected void loadLanguage()
        {
            lbNodesRegister.Text = languageMana.GetTagValueByLanguageIDandTagName("lbNodesRegister", language.LanguagesID);
            lbUserNameR.Text = languageMana.GetTagValueByLanguageIDandTagName("lbUserNameR", language.LanguagesID);
            lbPasswordR.Text = languageMana.GetTagValueByLanguageIDandTagName("lbPasswordR", language.LanguagesID);
            lbConfirmR.Text = languageMana.GetTagValueByLanguageIDandTagName("lbConfirmR", language.LanguagesID);
            lbFullNameR.Text = languageMana.GetTagValueByLanguageIDandTagName("lbFullNameR", language.LanguagesID);
            lbEmailR.Text = languageMana.GetTagValueByLanguageIDandTagName("lbEmailR", language.LanguagesID);
            lbAddress.Text = languageMana.GetTagValueByLanguageIDandTagName("lbAddress", language.LanguagesID);
            lbPhone.Text = languageMana.GetTagValueByLanguageIDandTagName("lbPhone", language.LanguagesID);
            btnRegister.Text = languageMana.GetTagValueByLanguageIDandTagName("btnRegister", language.LanguagesID);
            btnCancel.Text = languageMana.GetTagValueByLanguageIDandTagName("btnCancel", language.LanguagesID);
        }

        protected bool GetData()
        {
            if (txtUserName.Text.Trim() != "")
            {
                userName = txtUserName.Text;
            }
            else
            {
                lbError.Text = "Bạn chưa nhập tên đăng nhập !";
                return false;
            }

            if (txtPassword.Text.Trim() != "")
            {

                pass = txtPassword.Text;

            }
            else
            {
                lbError.Text = "Bạn chưa nhập mật khẩu !";
                return false;
            }

            if (txtConfirm.Text.Trim() == "" || txtConfirm.Text == string.Empty)
            {
                lbError.Text = "Bạn chưa xác nhận mật khẩu !";
                return false;
            }

            if (txtPassword.Text.Equals(txtConfirm.Text) == false)
            {
                lbError.Text = "Mật khẩu của bạn phải xác nhận lại !";
                return false;
            }

            if (txtEmail.Text == "" || txtEmail.Text == string.Empty)
            {
                lbError.Text = "Bạn chưa nhập thư điện tử !";
                return false;
            }
            else
            {
                if (cv.CheckEmail(txtEmail.Text))
                {
                    if (accountMana.CheckEmail(txtEmail.Text) == 0)
                    {
                        email = txtEmail.Text;
                    }
                    else
                    {
                        lbError.Text = "Địa chỉ thư điện tử này đã được dùng !";
                        return false;
                    }
                }
                else
                {
                    lbError.Text = "Địa chỉ thư điện tử của bạn không đúng định dạng !";
                    return false;
                }
            }

            if (txtPhone.Text != "" || txtPhone.Text != string.Empty)
            {
                if (cv.CheckNumber(txtPhone.Text))
                {
                    phone = txtPhone.Text;
                }
                else
                {
                    lbError.Text = "Số điện thoại của bạn không đúng định dạng !";
                    return false;
                }
            }


            return true;
        }

        protected void btnRegister_Click(object sender, EventArgs e)
        {
            try
            {
                if (GetData() == false)
                    return;

                if (accountMana.GetAccountByUserName(txtUserName.Text) == null)
                {
                    pass = txtPassword.Text;
                    account.UserName = userName;
                    account.Password = md5.EnMD5(pass);
                    account.Email = email;
                    account.Roles = true;
                    account.AccountStatus = true;
                    account.Date = DateTime.Now;

                   // accountMana.CreateUser(userName, md5.EnMD5(pass), "", "", email, "", "", "", true, "");
                    int idOut= accountMana.CreateAccount(account);

                    internerUser.AccountID = idOut;
                    internerUser.FullName = fullName;
                    internerUser.Email = email;
                    internerUser.Phone = phone;
                    internerUser.Address = address;

                    accountMana.CreateInternalUser(internerUser);

                    //Phân quyền mặc định
                    internerUser = new InternalUser();
                    internerUser = accountMana.GetInternalByUserName(txtUserName.Text);

                    modul = new Modul();
                    modul = accountMana.GetModulByModulCode("MSHAREHOLDERS");
                    accountMana.SetPermission(internerUser, modul);

                    lbError.Text = "Chúc mừng bạn đã đăng ký thành công! Để có thể đăng nhập vào hệ thống xin vui lòng liên hệ quản trị hệ thống để được kích hoạt tài khoản";

                }
                else
                {
                    lbError.Text = "Tên đăng nhập đã được sử dụng!";
                    return;
                }
            }
            catch (Exception)
            {

            }
        }

        protected void btnCancel_Click(object sender, EventArgs e)
        {
            txtUserName.Text = "";
            txtFullName.Text = "";
            txtPassword.Text = "";
            txtConfirm.Text = "";
            txtEmail.Text = "";
            txtAddress.Text = "";
            txtPhone.Text = "";
        }
    }
}